// 题目描述
// 讨论 (4.4K)
// 14. 最长公共前缀
// 简单
// 2.9K
// 编写一个函数来查找字符串数组中的最长公共前缀。
// 如果不存在公共前缀，返回空字符串 ""。
//   示例 1：
// 输入：strs = ["flower","flow","flight"]
// 输出："fl"
// 示例 2：
// 输入：strs = ["dog","racecar","car"]
// 输出：""
// 解释：输入不存在公共前缀。
//   提示：
// 1 <= strs.length <= 200
// 0 <= strs[i].length <= 200
// strs[i] 仅由小写英文字母组成
// 通过次数
// 1.1M
// 提交次数
// 2.6M
// 通过率
// 43.4%
// https://leetcode.cn/problems/longest-common-prefix/

/**
 * @param {string[]} strs
 * @return {string}
 */
// 注意：javascript 代码由 chatGPT🤖 根据我的 java 代码翻译，旨在帮助不同背景的读者理解算法逻辑。
// 本代码已经通过力扣的测试用例，应该可直接成功提交。

var longestCommonPrefix = function (strs) {
  let m = strs.length
  // 以第一行的列数为基准
  let n = strs[0].length
  for (let col = 0; col < n; col++) {
    for (let row = 1; row < m; row++) {
      let thisStr = strs[row], prevStr = strs[row - 1]
      // 判断每个字符串的 col 索引是否都相同
      if (col >= thisStr.length || col >= prevStr.length ||
        thisStr.charAt(col) !== prevStr.charAt(col)) {
        // 发现不匹配的字符，只有 strs[row][0..col-1] 是公共前缀
        return strs[row].substring(0, col)
      }
    }
  }

  return strs[0]
}
